package block;
/*
* 内部类：
*
*       就是定义在一个类里面的类
*创建对象的格式：
*       外部类名.内部类名 对象名 = new 外部类对象().new 内部类对象();
*
*   成员访问字节:
*       1、在内部类中，访问外部类成员：直接访问，包括私有
*
*       2、在外部类中，访问内部类成员：需要创建对象进行访问
*
*
* */
public class Outer {

    public static void main(String[] args) {
//        Outer2.Inter oi = new Outer2(). new Inter();
//        oi.show();

        MyOuter.MyInner os = new MyOuter().new MyInner();
        os.show();

    }


}

class MyOuter{
    int num = 10;

    class MyInner{
        int num = 20;

        public void show() {
            int num = 30;

            System.out.println(num); //30
            System.out.println(this.num);  //20
            System.out.println(MyOuter.this.num);  //10
        }
    }
}

/*
*
*
*
* */


class Outer2{
    int num = 20;
    private void test(){
        Inter i = new Inter();
        i.show();
        System.out.println("Outer2");
    }

    class Inter{
        int num = 10;
        public void show(){
            System.out.println("show");
            test();
        }
    }
}


class Car{
    String carName; //车型
    int carAge; // 车龄
    int carColor; // 汽车颜色


    public class Engine{ //发动机类
        String enginrName; // 发动机品牌
        int engineAg; // 使用年限
    }


}